D-IDENTITY-2: frugal north-star mint (dedup-by-URI + entity_type↔NiblePath bijection)#484
Conversation
…>NiblePath bijection (D-IDENTITY-2) Phase B first brick (moves 1+2+3 of the identity plan). entity_type is now the GLOBAL shared template id (DECISION-3): a canonical class URI already in the dictionary reuses its entity_type (new row, new bridge/namespace, same template id); fresh mints stay monotone append-order with gaps, u16 overflow guarded. The bijection pair table (path_by_type/type_by_path) + register_class_path (both-way conflict-rejecting, EMPTY-sentinel guard, idempotent on same pair) + niblepath_of/entity_type_of make Eineindeutigkeit CI-falsifiable. rows_with_entity_type exposes the multi-row reading dedup introduces. Three stale-doc fixes (namespace.rs 'dense within the namespace' -> GLOBAL; bridge.rs 'dense index' -> compare-only). +5 tests (dedup shares id, monotone-with-gaps, checksum-reappend keeps id, bijection round-trips both ways, bijection conflicts rejected); 14 registry tests green. My 3 files clippy/fmt-clean; pre-existing crate-wide -D warnings and fmt drift in untouched files left as-is (surgical diff). Board: STATUS_BOARD identity section (D-IDENTITY-1..4), TD-PAIRTABLE-1, AGENT_LOG, plan LANDED note. Deferred: D-IDENTITY-3 (gate the positional contract/ontology.rs:85 helper, I-LEGACY-API-FEATURE-GATED), D-IDENTITY-4 (pair-table Lance persistence). https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
…E, supervision-leg over-claim caught Retroactive epiphany-brainstorm-council gate (the gate skipped when the three identity epiphanies were hand-prepended this session). 5-savant panel, every claim re-verified against source. Verdict: 3x REVISE, no REJECT. - E-ANCESTRY-TRINITY-1: the 'supervision-edge = is_ancestor_of, same relation' leg is NOT wired -- is_ancestor_of has zero call-sites in lance-graph-supervisor and orchestration.rs (grep-verified). Demoted identity -> CONJECTURE so a future session does not delete supervisor routing believing the bit-shift subsumes it. Legs 1-3 (one-shift subClassOf, template specialization) stay code-true. - E-MINT-TRACE-1: present-tense bug -- 'registry NOT deduped' was true at write-time but D-IDENTITY-2 (5aaa54c) shipped the dedup the same session; the :476 mint cite went stale (now 565-579). Two-mints-coexist caveat added (canonical registry mint vs legacy positional contract/ontology.rs:85, gated by deferred D-IDENTITY-3). - E-OGAR-NORTHSTAR-1: DECISION stands; provenance pointer added. Applied append-only: prepended E-COUNCIL-IDENTITY-1 + updated the 3 Status lines (past entry bodies untouched). AGENT_LOG entry for the council run. https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
…iberate append-only exception) User asked to drop the two embarrassing identity epiphanies; chose the full sweep, so this also removes the council-verdict entry that narrated them. Removed from EPIPHANIES.md: E-MINT-TRACE-1 (tense bug — its 'not deduped' claim was inverted by D-IDENTITY-2 the same session), E-ANCESTRY-TRINITY-1 (unwired supervision-leg over-claim), E-COUNCIL-IDENTITY-1 (the retroactive gate verdict on the two). E-OGAR-NORTHSTAR-1 (a ratified DECISION) and E-IDENTITY-WHITEBOX-1 are kept; E-OGAR's back-references to the removed entries were stripped so it stands alone. De-dangled all cross-references: STATUS_BOARD epiphany list, two AGENT_LOG work-record entries (kept the substance, dropped the removed-ID pointers), and removed the council-run AGENT_LOG entry. Zero residual references remain. This is a deliberate one-off exception to the append-only board rule, made on the repo owner's explicit instruction; the audit trail is this commit. The underlying code (D-IDENTITY-2: dedup + bijection, 5aaa54c) is unchanged and remains correct — only the ledger prose was removed. https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
…taFusion UDF + Cypher over one HHTL address space Research deliverable: mailboxes parse as a normal cold path because (a) the fork's KV keys are storekey-encoded order-preserving and record-id ranges lower to native byte-range scans, so an HHTL subtree under the left-aligned addr64 codec is ONE contiguous range (is_ancestor_of = range containment); (b) the mailbox needs only the 5-method Transactable read subset over a phase-pinned SoaEnvelope snapshot to be indistinguishable from Lance cold. The ontology registry (entity_type<->NiblePath bijection, D-IDENTITY-2) is the resident Christmas-tree skeleton; rows materialize at their address from whichever tier owns them; DEFINE TABLE/FIELD round-trips through the C16b DDL builders as the catalog exchange format. Grounded by two parallel repo sweeps + main-thread spot-verification; one agent claim corrected (SoaEnvelope has zero real impls -- identity N3 stands, now D-PG-2). kv-lance found FULLY implemented in-tree (surreal_container's BLOCKED C/D stale). LanceDB-leading ruling respected throughout: SurrealQL is a dialect/view, never the store. Board: INTEGRATION_PLANS prepend, STATUS_BOARD D-PG-1..6 (Queued), AGENT_LOG. https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
…c foveated tree-builder User direction confirmed against identity.rs octet layout: the GUID's left half (classid + HHTL address) is order-preserving plain bytes, so Cypher label/subtree patterns compile to byte-prefix range predicates servable by Lance zone-maps/scalar indexes; quantized similarity (RaBitQ-style/CAM-PQ/ Binary16K) rides the same row. Two caveats: namespace sorts first (cross- namespace template scans = per-ns ranges or registry hop); GUID carries only 4 path nibbles (deeper scans via registry/addr64). New M6 + D-PG-7: NiblePath assignments computable by a deterministic hierarchical partitioner (CLAM pole-split preferred over order-dependent classic Louvain), 16-way capacity-bounded so foveation falls out (depth grows where dense), and APPEND-STABLE as an iron requirement -- bootstrap once, greedy insertion after, minted paths never move (tree = address space; re-clustering would re-address every GUID). Determinism + append-stability property tests mandatory. https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
|
Warning Review limit reached
More reviews will be available in 7 minutes and 43 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f3a0e99287
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| .get(proposal.ogit_uri.as_str()) | ||
| .map(|idx| self.rows[*idx as usize].schema_ptr.entity_type_id()) | ||
| { | ||
| Some(existing) => existing, |
There was a problem hiding this comment.
Keep URI lookups namespace-aware when deduping rows
When a second bridge/namespace maps the same ogit_uri, this branch now inserts another row with the reused entity_type, but the existing by_uri index is still single-valued and is overwritten by the later append. In the new intended case from the tests (same canonical URI in multiple namespaces), OgitBridge::for_namespace("Person").entity_by_uri(...) can resolve the later Health/Odoo row and then fail the namespace check in NamespaceBridge::entity_by_uri (bridge.rs:88-101); row_for_uri and provenance attachment similarly target only the last row. Either keep the URI index pointed at a canonical row or make raw-URI lookup namespace-aware when allowing duplicate URI rows.
Useful? React with 👍 / 👎.
Surveyed PRs #471-#487. Three landed that materially affect my outstanding ask list: - #482 (merged): GUID canon + prefix routing knowledge doc — pins TWO-ALGEBRA RULE (sign=XOR, magnitude=bundle, never MergeMode::Xor) + helix CurveRuler stride-4-over-17 as bit-exact integer phase generator. Both are load-bearing receipts for substrate-addressing-v1. - #484 (merged): D-IDENTITY-2 ships entity_type↔NiblePath bijection in lance-graph-ontology registry. RESOLVES the Tier-1 'NiblePath scheme for FMA classes' ask — OGAR Phase 8 calls register_class_path() per FMA Class. - #485 (OPEN): PROBE-MANTISSA-FILL + PROBE-PHASE-1 both GREEN. The golden-mantissa placement leg of the substrate-addressing claim is now measured (not asserted): beats seeded random by ~30% at k=256 + half worst-case pile-up. CurveRuler bit-exactness verified over 20 path/depth pairs. Updated Decision 1 trigger: substrate-addressing-v1.md now files after #485 merges (not after D-HELIX-1 owner ping — they're actively probing). D-CESIUM-1 (mine — extend implicit_tiling.rs to consume helix::bounds) is the file-soonest deliverable. D-JC-1 still needs per-scene-class p calibration timeline.
What this is
Session work on
claude/nice-edison-g4rhhl, rebased onto currentmain(#483). One substantive code change; the rest is board housekeeping + exploratory research docs. Flagged honestly so reviewers don't mistake the plans for committed architecture.Substantive (code) —
f4cec3b9D-IDENTITY-2lance-graph-ontologyregistry: dedup-by-URI mint (a canonical class URI already in the dictionary REUSES its globalentity_type; fresh mints stay monotone append-order, u16-overflow-guarded) + theentity_type ↔ NiblePathbijection pair table (register_class_pathboth-way conflict-rejecting,niblepath_of/entity_type_of/rows_with_entity_type) + round-trip tests. +5 tests; 14 registry tests green.This is the registry/policy half of Phase B that the just-merged GUID-canon doc (
#482,.claude/knowledge/guid-canon-and-prefix-routing.md) flags as "CONJECTURE until Phase B lands." It conforms to the canon (lance-graph owns policy; ndarray owns mechanism). TheNodeGuidlayout change itself (canon's "groups 3–4 yield 8 nibbles to HIP/TWIG" — i.e. reclaimshape_hash+ RFC-9562 wrapper bits to tree-address tiers) is deliberately NOT in this PR; it's the version-gated Phase-B follow-up, pending a group-by-group audit against the realOGAR/CLAUDE.mdcanon.Board housekeeping
45f809d6— epiphany-council gate verdict on three identity entries (3× REVISE; caught one supervision-leg over-claim that had zero call-sites).cb026a18— removal of those three identity epiphany entries at the repo owner's explicit instruction — a deliberate, one-off exception to the append-only ledger rule, recorded as such in the commit (audit trail is the commit, not a ledger entry). De-dangled all cross-references;EPIPHANIES.mdintegrity verified (upstreamE-WHP-BIPOLAR-1preserved).Exploratory (research docs — NOT final spec)
25e50b58+f3a0e992—polyglot-container-query-membrane-v1plan + addendum. These are research provenance. The "membrane / strategy-registry" framing was superseded in discussion by the self-describing-key convergence (the class-in-key makes the cold path already a graph; no membrane needed) and by the GUID-canon doc that landed onmain. Kept for the grounded inventory (verified file:line surface of lance-graph + the surrealdb fork's AST/RecordId/kv-lance), not as a committed direction.Notes
Claude <noreply@anthropic.com>).https://claude.ai/code/session_014A4JuRCqKP2yNENrQ9Ha7H
Generated by Claude Code